package com.hyx.api.service;

import com.hyx.api.domain.PriceDownFormula;
import com.hyx.api.domain.bo.*;
import com.hyx.api.domain.vo.InquiryOrderDetailVo;
import com.hyx.api.domain.vo.ShopOrderListVo;
import com.ruoyi.common.core.domain.AjaxResult;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface IAppShopService {

    /**
     * 获取所有添加的类型列表（如：手机、平板等）
     *
     * @return
     */
    AjaxResult queryTypeList();

    /**
     * 根据字典类型获取字典值
     *
     * @param dictType
     * @return
     */
    AjaxResult queryTypeDataList(String dictType);

    /**
     * 新增验机选项（包含验机成色）
     *
     * @param bo 验机选项（包含验机成色）
     */
    void insertVerifyModelOption(VerifyModelOptionBo bo);

    /**
     * 修改验机选项（包含验机成色）
     *
     * @param bo 验机选项（包含验机成色）
     * @return 结果
     */
    void updateVerifyModelOption(VerifyModelOptionBo bo);

    /**
     * 批量删除验机选项（包含验机成色）
     *
     * @param ids 需要删除的验机选项（包含验机成色）主键集合
     * @return 结果
     */
    void deleteVerifyModelOptionByIds(Long[] ids);

    /**
     * 根据机型获取验机选项列表
     *
     * @param modelTypeId
     * @return
     */
    AjaxResult queryVerifyOptions(Integer modelTypeId);

    /***********************下方为订单接口******************/

    /**
     * 新增询价订单
     */
    int insertInquiryOrder(InquiryOrderBo bo);

    /**
     * 绑定询价订单的中标报价单ID
     *
     * @param inquiryOrderId
     * @param offerOrderId
     * @return
     */
    AjaxResult inquiryBindOfferOrder(Long inquiryOrderId, Long offerOrderId);

    /**
     * 回收订单状态更新
     *
     * @param bo
     * @return
     */
    AjaxResult recycleOrderStaUpdate(RecOrderStaUpdateBo bo);

    /**
     * 获取待处理的订单_以门店为维度
     *
     * @return
     */
    AjaxResult queryShopNoHandleOrderList();

    /**
     * 获取门店待处理订单详情
     *
     * @param recycleOrderId
     * @return
     */
    AjaxResult queryShopNoHandleOrderDetail(Long recycleOrderId);

    /**
     * 获取当前门店所有询价中订单列表
     *
     * @return
     */
    AjaxResult queryInquiringList();

    /**
     * 获取当前登录用户所有询价订单，店长则是门店所有人
     *
     * @return
     */
    AjaxResult queryInquiryAllList(Integer status);

    /**
     * 获取公司关联的回收商
     *
     * @param keyword
     * @return
     */
    AjaxResult queryShopBindRecycleBusList(String keyword);

    /**
     * 修改退货订单状态
     *
     * @param refundOrderId
     * @param status
     * @return
     */
    AjaxResult updateRefundOrderStatus(Long refundOrderId, Integer status);

    /**
     * 获取退货订单列表
     *
     * @param req
     * @return
     */
    List<ShopOrderListVo> queryRefundOrderList(ShopRefOrderQueBo req);

    /**
     * 审核追差订单
     *
     * @return
     */
    AjaxResult auditSpreadOrder(SpreadOrderBo bo);

    /**
     * 获取追差订单列表
     *
     * @param req
     * @return
     */
    List<ShopOrderListVo> querySpreadOrderList(ShopSpreadQueBo req);

    /**
     * 获取门店发货数量记录
     *
     * @return
     */
    AjaxResult queryShopSendCountInfo();

    /**
     * 获取门店统计数据
     *
     * @param bo
     * @return
     */
    AjaxResult queryShopStatistics(ShopStatisticsBo bo);

    /**
     * 修改压价设置状态
     *
     * @param isOpen
     * @return
     */
    AjaxResult updateRateOpen(Integer isOpen);

    /**
     * 创建/更新门店压价公式表
     *
     * @param bo
     * @return
     */
    AjaxResult createOrUpdatePriceDown(PriceDownFormula bo);

    /**
     * 删除门店压价公式表
     *
     * @param id
     * @return
     */
    AjaxResult deletePriceDown(Integer id);

    /**
     * 获取门店压价公式列表
     *
     * @return
     */
    AjaxResult queryPriceDownList();

    /**
     * 获取该用户的业绩
     *
     * @return
     */
    AjaxResult queryEnterprise();

    /**
     * 获取询价订单的消息
     *
     * @param inquiryOrderId
     * @return
     */
    AjaxResult queryMsgDialogueList(Long inquiryOrderId);
}
